package com.cyl.manager.aws.service;

import java.util.Arrays;
import java.util.List;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.utils.SecurityUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import com.cyl.manager.aws.domain.entity.ExportExcel;
import com.cyl.manager.aws.mapper.ExportExcelMapper;
import com.cyl.manager.aws.pojo.query.ExportExcelQuery;

/**
 * 数据导出管理Service业务层处理
 *
 *
 * @author zcc
 */
@Service
public class ExportExcelService {
    @Autowired
    private ExportExcelMapper exportExcelMapper;

    /**
     * 查询数据导出管理
     *
     * @param id 数据导出管理主键
     * @return 数据导出管理
     */
    public ExportExcel selectById(Long id) {
        return exportExcelMapper.selectById(id);
    }

    /**
     * 查询数据导出管理列表
     *
     * @param query 查询条件
     * @param page 分页条件
     * @return 数据导出管理
     */
    public List<ExportExcel> selectList(ExportExcelQuery query, Pageable page) {
        if (page != null) {
            PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()," create_time desc");
        }
        QueryWrapper<ExportExcel> qw = new QueryWrapper<>();
        qw.eq("del_flag",0);
        String createByNameLike = query.getCreateByNameLike();
        if (!StringUtils.isEmpty(createByNameLike)) {
            qw.like("create_by_name", createByNameLike);
        }
        Long createByDept = query.getCreateByDept();
        if (createByDept != null) {
            qw.eq("create_by_dept", createByDept);
        }
        Long deptZbjId = query.getDeptZbjId();
        if (deptZbjId != null) {
            qw.eq("dept_zbj_id", deptZbjId);
        }
        Long dataSize = query.getDataSize();
        if (dataSize != null) {
            qw.eq("data_size", dataSize);
        }
        Long fileSize = query.getFileSize();
        if (fileSize != null) {
            qw.eq("file_size", fileSize);
        }
        String fileBz = query.getFileBz();
        if (!StringUtils.isEmpty(fileBz)) {
            qw.eq("file_bz", fileBz);
        }
        Long outSize = query.getOutSize();
        if (outSize != null) {
            qw.eq("out_size", outSize);
        }
        String fileNameLike = query.getFileNameLike();
        if (!StringUtils.isEmpty(fileNameLike)) {
            qw.like("file_name", fileNameLike);
        }
        String fileUrl = query.getFileUrl();
        if (!StringUtils.isEmpty(fileUrl)) {
            qw.eq("file_url", fileUrl);
        }
        Long exeTime = query.getExeTime();
        if (exeTime != null) {
            qw.eq("exe_time", exeTime);
        }
        String exeMsg = query.getExeMsg();
        if (!StringUtils.isEmpty(exeMsg)) {
            qw.eq("exe_msg", exeMsg);
        }
        String exeZt = query.getExeZt();
        if (!StringUtils.isEmpty(exeZt)) {
            qw.eq("exe_zt", exeZt);
        }
        String outYw = query.getOutYw();
        if (!StringUtils.isEmpty(outYw)) {
            qw.like("out_yw", "%".concat(outYw.trim()).concat("%"));

        }
        Long outId = query.getOutId();
        if (outId != null) {
            qw.eq("out_id", outId);
        }
        String outQwJson = query.getOutQwJson();
        if (!StringUtils.isEmpty(outQwJson)) {
            qw.eq("out_qw_json", outQwJson);
        }
        return exportExcelMapper.selectList(qw);
    }

    /**
     * 新增数据导出管理
     *
     * @param exportExcel 数据导出管理
     * @return 结果
     */
    public int insert(ExportExcel exportExcel) {
        exportExcel.setDelFlag(0);
        exportExcel.setCreateTime(LocalDateTime.now());
        exportExcel.setCreateBy(SecurityUtils.getUserId());
        exportExcel.setCreateByDept(SecurityUtils.getDeptId());
        exportExcel.setCreateByName(SecurityUtils.getNickName());
        exportExcel.setDeptZbjId(SecurityUtils.getDeptZbjId());
        
        return exportExcelMapper.insert(exportExcel);
    }

    /**
     * 修改数据导出管理
     *
     * @param exportExcel 数据导出管理
     * @return 结果
     */
    public int update(ExportExcel exportExcel) {
        return exportExcelMapper.updateById(exportExcel);
    }

    /**
     * 批量删除数据导出管理
     *
     * @param ids 需要删除的数据导出管理主键
     * @return 结果
     */
    public int deleteByIds(Long[] ids) {
        return exportExcelMapper.updateDelFlagByIds(ids);
    }

    /**
     * 删除数据导出管理信息
     *
     * @param id 数据导出管理主键
     * @return 结果
     */
    public int deleteById(Long id) {
        Long[] ids = {id};
        return exportExcelMapper.updateDelFlagByIds(ids);
    }
}
